package com.mkl.business.controller;

import com.mkl.business.domain.Goods;
import com.mkl.business.service.GoodsService;
import com.mkl.business.vo.GoodsVo;
import com.mkl.system.common.Constant;
import com.mkl.system.common.DataGridView;
import com.mkl.system.common.ResultObj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author king
 * @version 1.0
 * @date 2020/4/8 10:57
 */
@RestController
@RequestMapping("api/goods")
public class GoodsController {
    @Autowired
    private GoodsService goodsService;

    /**
     * 查询全部商品
     *
     * @param goodsVo 商品vo
     * @return 返回结果
     */
    @RequestMapping("loadAllGoods")
    public Object loadAllGoods(GoodsVo goodsVo) {
        return goodsService.queryAllGoods(goodsVo);
    }

    /**
     * 添加
     */
    @RequestMapping("addGoods")
    public ResultObj addGoods(Goods goods) {
        try {
            goods.setAvailable(Constant.AVAILABLE_TRUE);
            goodsService.saveGoods(goods);
            return ResultObj.ADD_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.ADD_ERROR;
        }

    }

    /**
     * 修改
     */
    @RequestMapping("updateGoods")
    public ResultObj updateGoods(Goods goods) {
        try {
            goodsService.updateGoods(goods);
            return ResultObj.UPDATE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.UPDATE_ERROR;
        }

    }

    /**
     * 删除
     */
    @RequestMapping("deleteGoods")
    public ResultObj deleteGoods(Integer id) {
        try {
            goodsService.removeById(id);
            return ResultObj.DELETE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DELETE_ERROR;
        }
    }

    /**
     * 批量删除
     */
    @RequestMapping("batchDeleteGoods")
    public ResultObj batchDeleteGoods(Integer[] ids) {
        try {
            List<Integer> idsList = new ArrayList<>(Arrays.asList(ids));
            goodsService.removeByIds(idsList);
            return ResultObj.DELETE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DELETE_ERROR;
        }
    }

    /**
     * 查询所有可用的商品，不分页
     *
     * @return 返回所有商品
     */
    @GetMapping("getAllAvailableGoods")
    public Object getAllAvailableGoods() {
        return goodsService.getAllAvailableGoods();
    }


    /**
     * 根据供应商ID查询商品信息
     *
     * @param providerid 供应商id
     * @return 返回结果
     */
    @GetMapping("getGoodsByProviderId")
    public Object getGoodsByProviderId(Integer providerid) {
        return goodsService.getGoodsByProviderId(providerid);
    }

    /**
     * 根据商品ID查询商品信息
     *
     * @param goodsid 商品id
     * @return 返回结果
     */
    @GetMapping("getGoodsByGoodId")
    public Object getGoodsByGoodId(Integer goodsid) {
        return new DataGridView(goodsService.getById(goodsid));
    }

    /**
     * 查询所有可用的商品名称数量
     *
     * @return 返回所有商品
     */
    @GetMapping("getAllAvailableGoodsTypeSum")
    public Integer getAllAvailableGoodsTypeSum() {
        return goodsService.getAllAvailableGoodsTypeSum();
    }

    /**
     * 查询所有可用的商品数量
     *
     * @return 返回所有商品
     */
    @GetMapping("getAllAvailableGoodsSum")
    public Integer getAllAvailableGoodsSum() {
        return goodsService.getAllAvailableGoodsSum();
    }
}

